// #include<iostream>
// using namespace std;
#include "class.h"

//在C语言中结构中是不能够定义函数的
//在C++中结构体可以定义函数 -> class(类)
//class 和struct的区别
//class定义类：类的成员变量的默认访问限定符是private
//struct定义类：类的成员变量的默认访问限定符是public


//什么是封装

//class类相当于是定义了一个新的作用域：
//在类外定义成员函数时 需要使用域作用限定于::

void student::Init(string name,string id,int age)
{
    _name = name;
    _id = id;
    _age = age;
}
void student::print()
{
    cout << _name <<" " <<_id <<" "<<_age<<'\n';
}

// //类的实例化：类就是相当于是一张图纸
// //类的实例化就相当于是根据图纸去构造出实物
int main()
{
    //类的实例化
    student s;
    //string s("zhangsan",123,20);
    //这样错的原因：
    s.Init("zhangsan","123",20);
    s.print();
    return 0;
}

//类对象大小的计算
//类中既可以有成员变量，又可以有成员函数，那么一个类的对象中包含了什么？如何计算
//一个类的大小？
//一个类大小：仅需要计算成员变量的大小即可，不需要计算成员函数的大小
//为什么
//因为成员函数是放在公共代码去中的
//这样设计有什么好处，如果每一个对象中都存放一份成员函数的话，会造成内存浪费
//通过this指针可以是多个对象公用个成员函数

//什么是内存对齐
//结构体偏移量：
//vs中对齐数
//对齐数：min(默认对齐数，变量的大小)
//总大小：最大对齐数的整数倍

